// 任务管理模块API接口
import { get, post, put, del } from './request';

/**
 * 任务管理相关API接口 - 与后端TaskController对齐
 */
export const taskApi = {
  /**
   * 获取所有任务
   * @returns {Promise} 任务列表数据
   */
  getAllTasks: () => {
    return get('/api/task');
  },

  /**
   * 根据创建人昵称获取任务列表
   * @param {string} creatorNickname 创建人昵称
   * @returns {Promise} 任务列表数据
   */
  getTasksByCreator: (creatorNickname) => {
    return post('/api/task/creator/list', { creatorNickname });
  },

  /**
   * 根据创建人昵称和日期范围获取任务
   * @param {Object} params 查询参数
   * @param {string} params.creatorNickname 创建人昵称
   * @param {string} params.startDate 开始日期 (YYYY-MM-DD格式)
   * @param {string} params.endDate 结束日期 (YYYY-MM-DD格式)
   * @returns {Promise} 任务列表数据
   */
  getTasksByCreatorAndDateRange: (params) => {
    return post('/api/task/creator/date-range', params);
  },

  /**
   * 根据创建人昵称和完成状态获取任务
   * @param {Object} params 查询参数
   * @param {string} params.creatorNickname 创建人昵称
   * @param {boolean} params.isCompleted 完成状态
   * @returns {Promise} 任务列表数据
   */
  getTasksByCreatorAndCompletedStatus: (params) => {
    return post('/api/task/creator/completed', params);
  },

  /**
   * 根据重要性级别获取任务
   * @param {number} level 重要性级别 (1-3)
   * @returns {Promise} 任务列表数据
   */
  getTasksByImportanceLevel: (level) => {
    return get(`/api/task/importance/${level}`);
  },

  /**
   * 创建任务
   * @param {Object} taskData 任务数据
   * @param {string} taskData.title 任务标题
   * @param {string} taskData.content 任务内容
   * @param {string} taskData.creatorNickname 创建人昵称
   * @param {number} taskData.importanceLevel 重要性级别 (1-3)
   * @param {boolean} taskData.isCompleted 完成状态
   * @param {string} taskData.dueDate 截止日期
   * @returns {Promise} 创建结果
   */
  createTask: (taskData) => {
    return post('/api/task/create', taskData);
  },

  /**
   * 更新任务完成状态
   * @param {number} taskId 任务ID
   * @param {boolean} isCompleted 完成状态
   * @returns {Promise} 更新结果
   */
  updateTaskCompleteStatus: (taskId, isCompleted) => {
    // 包装在对象中，与后端期望格式一致
    return put(`/api/task/${taskId}/complete`, { isCompleted });
  },

  /**
   * 获取任务详情
   * @param {number} taskId 任务ID
   * @returns {Promise} 任务详情数据
   */
  getTaskDetail: (taskId) => {
    return get(`/api/task/${taskId}`);
  },

  /**
   * 更新任务信息
   * @param {number} taskId 任务ID
   * @param {Object} taskData 更新的任务数据
   * @returns {Promise} 更新结果
   */
  updateTask: (taskId, taskData) => {
    return put(`/api/task/${taskId}`, taskData);
  },

  /**
   * 删除任务
   * @param {number} taskId 任务ID
   * @returns {Promise} 删除结果
   */
  deleteTask: (taskId) => {
    return del(`/api/task/${taskId}`);
  },

  /**
   * 获取今日到期任务
   * @returns {Promise} 今日到期任务列表
   */
  getTasksDueToday: () => {
    return get('/api/task/due-today');
  }
};

// 导出所有方法作为命名导出
export const { 
  getAllTasks, 
  getTasksByCreator, 
  getTasksByCreatorAndDateRange, 
  getTasksByCreatorAndCompletedStatus, 
  getTasksByImportanceLevel,
  createTask,
  updateTaskCompleteStatus,
  getTaskDetail,
  updateTask,
  deleteTask,
  getTasksDueToday
} = taskApi;

// 同时保留默认导出以便兼容
export default taskApi;